package xfuzzy.alg_genetico.indeterminado.cross;

import java.util.Random;
import java.util.UUID;

import xfuzzy.xfghl.codification.DoubleChromosome;

public class CruceUnPunto {
	
	public CruceUnPunto(long seed)  {
		
		//super(seed);
	}

	public DoubleChromosome cruzar(DoubleChromosome c1, DoubleChromosome c2) {
		
		return null;
	}
	
	public static void cruzarEstructuraUnPunto(DoubleChromosome c1, DoubleChromosome c2, DoubleChromosome hijo)  {
		
		Random rnd = new Random(UUID.randomUUID().hashCode());
		int longitud_estructura = c1.getNumVariables() + c2.getNumModulos();
		int punto_corte = rnd.nextInt(longitud_estructura);
		char [] estructura_c1 = c1.getEstructura();
		char [] estructura_c2 = c2.getEstructura();
		char [] estructura_hijo = new char[longitud_estructura];
		
		for (int index = 0; index <= punto_corte; index++)  {
			 estructura_hijo[index] = estructura_c1[index];
		}
		
		for (int index = punto_corte + 1; index < longitud_estructura; index++)
			 estructura_hijo[index] = estructura_c2[index];
		
		hijo.setEstructura(estructura_hijo);
		
		System.out.println("Punto de corte = " + punto_corte);
		System.out.print("Estructura c1 =   ");
		for (int i = 0; i < estructura_c1.length; i++)
			 System.out.print(estructura_c1[i]);
		System.out.println();
		System.out.print("Estructura c2 =   ");
		for (int i = 0; i < estructura_c2.length; i++)
			 System.out.print(estructura_c2[i]);
		System.out.println();
		System.out.print("Estructura hijo = ");
		for (int i = 0; i < estructura_hijo.length; i++)
			 System.out.print(estructura_hijo[i]);
	}

	protected DoubleChromosome cruzarEstructura(DoubleChromosome padre1, DoubleChromosome padre2, DoubleChromosome hijo) {

		return hijo;
	}

}
